﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace G28BS.Models
{
    public interface IAppRepository
    {
        // Only allow get of IEnumerable interface types such as List, DbSet etc.m
        // however set should not be implemented because it would cause conflicts
        // in assignments where AppRepository sets DbSet, while MockAppRepository sets Lists.
        // Instead you should implement a add'ModelName' method, see below.
        IEnumerable<UserProfile> userProfiles { get; }

        IEnumerable<GameRoom> gameRooms { get; }

        IEnumerable<FinishedGame> finishedGames { get; }

        IEnumerable<Slot> slots { get; }

        IEnumerable<Invitation> invitations { get; }

        IEnumerable<Game> games { get; }

        IEnumerable<GameResult> gameResults { get; }

        IEnumerable<Event> events { get; }

        IEnumerable<Group> groups { get; }

        IEnumerable<Tournament> tournaments { get; }

        //IEnumerable<Rank> ranks { get; }

        IEnumerable<RankmkII> rankIIs { get; }

        IEnumerable<tttResult> tttresults { get; }

        IEnumerable<Error> errors { get; }


        void AddUserProfile(UserProfile userProfile);
        void AddGameRoom(GameRoom gameRoom);
        void AddFinishedGame(FinishedGame finishedGame);
        void AddSlots(List<Slot> slots);
        void AddInvitation(Invitation invitation);
        void AddGame(Game game);
        void AddGameResult(GameResult gameResult);
        void AddEvent(Event e);
        void AddGroup(Group group);
        void AddTournament(Tournament tournament);
        void AddtttResult(tttResult tttresults);
        //void AddRank(Rank ranking);
        void AddRankII(RankmkII rankII);
        void AddError(Error error);
        void Save();

    }
}
